package com.horsen.service.user.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.horsen.service.base.model.VO.WebMemberOrderVO;
import com.horsen.service.user.model.DTO.LoginDTO;
import com.horsen.service.user.model.DTO.MemberQueryDTO;
import com.horsen.service.user.model.DTO.RegisterDTO;
import com.horsen.service.user.model.Member;

/**
 * 会员 服务类
 *
 * @author Horsen
 */
public interface MemberService extends IService<Member> {
    /**
     * 新增一个会员(会员注册)
     *
     * @param registerDTO 会员注册对象
     */
    void register(RegisterDTO registerDTO);

    /**
     * 查询一个会员(会员登录)
     *
     * @param loginDTO 登录对象
     * @return JWTToken
     */
    String login(LoginDTO loginDTO);

    /**
     * 根据ID获取一个会员订单VO
     *
     * @param id 会员ID
     * @return 会员订单VO
     */
    WebMemberOrderVO getMemberOrder(String id);

    /**
     * 分页查询
     *
     * @param page           当前页码
     * @param limit          每页记录数
     * @param memberQueryDTO 会员查询DTO
     * @return IPage类实例
     */
    IPage<Member> pageSelect(Long page, Long limit, MemberQueryDTO memberQueryDTO);

    /**
     * 根据ID修改会员封禁状态
     *
     * @param id 会员ID
     * @return 修改前状态
     */
    Boolean updateById(String id);
}
